<?php 


/**
 * Controlador de tipo de DatoCliente
 * 
 * @category   Controller
 * @package    modules__models
 * @author     Jose Miguel De Jesus <josejm07@hotmail.com>
 * @copyright  Todos los derechos reservados. Company24h. 2013.
 * 
 * @see        Administrador
 * @since      Version 1.0, revision 2.
 */
class Datocliente extends Controller
{
	public function __construct()
	{
		parent::Controller();
		
                $this->load->model(array('datoclientemodel','en_contacto_entrega_encuesta','ec_encuesta','enhistorico'));
	}
	
	/**
	 * 
	 * Esta funcion index es la que me va a cargar la vista.
	 */
	public function index()
	{
		$this->load->view('main',array('content_page' => 'datocliente', 'menutop' => 0));
               
	}
	
	/* funcion que trabaja con el datagrid
         */
	public function data()
	{ 
                
	      $page      = $this->input->post('page');
                $qtype     = $this->input->post('qtype');
                $query     = $this->input->post('query');
                $rp        = $this->input->post('rp');
                $sortname  = $this->input->post('sortname');
                $sortorder = $this->input->post('sortorder');
                
                $n = $rp * $page;
                         
                $listado = $rp * $page - $rp;
                
                if($listado < 0)  $listado =0;

                $count = "`id_estatus` = 0 and `date` >= '2013-01-01' and `id_activo_cancelado` = 0";
                $totalRecords = $this->datoclientemodel->getCount($count);
                
                if($n > $totalRecords) $n = $totalRecords;
                  
                $records =  $this->datoclientemodel->loadRegistro($rp,$qtype,$query,$listado,$sortname,$sortorder);
                
                $totalPages = ceil($totalRecords/$rp);

                 if ($page > $totalPages) 
		       $page = $totalPages;
                 
                  $json_output = array(
		            'page'		=> $page,
		            'total'		=> $totalRecords,
		            'rows'		=> array()
		        );
                 
                      if($records != false){
                          
                          foreach($records as $objetos){
                                          $json_output['rows'][] = array(
				 'Id_Referencia' => $objetos->getIdReferencia(),
                                         'cell' => array(
                                         'Id_Referencia' =>       $objetos->getIdReferencia(),
                                         'date' =>                $objetos->getDate(), 
                                         'Telefono1' =>           $objetos->getTelefono1(),
                                         'Telefono2' =>           $objetos->getTelefono2(),  
                                         'Email_Cia' =>           $objetos->getEmailCia(),
                                         'Contacto' =>            $objetos->getContacto(),
                                         'Referencia' =>          $objetos->getReferencia(), 
                                         'NombreServicio' =>      $objetos->getNombreServicio(),
                                         'UsernameUsuario' =>     $objetos->getUserNameUsuario(),
                                         'nota' =>                $objetos->getNota(),
                                         'Entregado_A' =>         $objetos->getEntrgadoA(),
                                         'id_estatus' =>          $objetos->getIdEstatus(), 
                                         'id_activo_cancelado' => $objetos->getIdActivoCancelado() 
                                             
                                         )
				          
				      );
			      }
                          
                      }
                  
          echo json_encode($json_output);
 
	}
	
	/**
	 * 
	 * Esta es la funcion para agregar datos en el datagrid
	 */
	public function add()
	{

            $separadas = explode('/', $_SERVER["REQUEST_URI"]);
             
                        $int =  end($separadas);
   
            $records =  $this->datoclientemodel->loadRegistroById($int);
   
             $datos['id']           = $records->getIdReferencia(); 
             $datos['referencia']   = $records->getReferencia();   
             $datos['date']         = $records->getDate();   
             $datos['telefono1']    = $records->getTelefono1();  
             $datos['telefono2']    = $records->getTelefono2();
             $datos['email']        = $records->getEmailCia();
             $datos['contanto']     = $records->getContacto();
             $datos['tiposervicio'] = $records->getNombreServicio();
             $datos['nota']         = $records->getNota();
             
         $this->load->view('main',array('content_page' => 'datocliente_add', 'menutop' => 0,'datos'=>$datos));
  
	}
	/**
	 * 
	 * Esta funcion permite cancelar una encuesta
	 */
	public function cancelar()
	{
                 $id = $this->input->post('id');
                 
            $inser = array(
                'id_activo_cancelado'=>'1'
            );
            
            $this->en_contacto_entrega_encuesta->insert($inser,$id);
	}
	
	/**
	 * 
	 * Esta es la funcion para guardar los datos que se agreguen o se guardar las 
	 * modificaciones que se le hagan a los mismos
	 */
	public function save()
	{
		$separadas = explode('/', $_SERVER["REQUEST_URI"]);
             
                       $int =  end($separadas);
                      
                     if($this->ec_encuesta->loadRegistroById($int) == FALSE):
                         
                      $usuarioInbound =  $this->datoclientemodel->loadRegistroById($int);
                                              
                       $data=array(
                           
                           'idCompany'        => $int,
                           'comentario'       => $this->input->post('mensaje'),
                           'usuario'          => $this->session->userdata('LOGGED_USR_NAME'),
                           'fecha_encuesta'   => date("Y-m-d h:i:s"),
                           'pt_satisfaccion'  => $this->input->post('satisfaccion'),
                           'pt_calidad'       => $this->input->post('calidad'),
                           'pt_tiempo'        => $this->input->post('tiempo'),
                           'pt_cortesia'      => $this->input->post('cortesia'),
                           'usuario_inbound'  => $usuarioInbound->getUserNameUsuario()
                           
                       );
                       
                       $inser = array(
                           'id_estatus'=>'1'
                                                      );
                       
       if(($this->input->post('satisfaccion')) && ($this->input->post('calidad'))
         && ($this->input->post('tiempo')) && ($this->input->post('cortesia')))
           {
           
            $this->ec_encuesta->insert($data);
            
            $this->en_contacto_entrega_encuesta->insert($inser,$int);
            
           }
                         
                     endif;
                                            
                       redirect('datocliente');    
        }
	
    /**
     * Este es el metodo que le pasa los datos al grafico en la vista
     */
     public function grafico()
     {
        $fdesde=  $this->input->post('fdesde') ?  $this->input->post('fdesde'): date('Y-m-d', strtotime('-1 week')); // resta 1 semana; 
        
        $fhasta = $this->input->post('fhasta') ?  $this->input->post('fhasta'): date('Y-m-d');//fecha actual
         
         
            $fecha = array(
          'fdesde' => $fdesde,
          'fhasta' => date("Y-m-d", strtotime("$fhasta +1 day")) 
         );
         
            $datos = array(   
             0 => 'Excelente',
             1 => 'Muy Bueno',
             2 => 'Bueno',
             3 => 'Regular',
             4 => 'Deficiente'  
         );
           
            $campos = array(
             0 => 'pt_satisfaccion',
             1 => 'pt_calidad',
             2 => 'pt_tiempo',
             3 => 'pt_cortesia',
          );      
          
      $resultado =  $this->ec_encuesta->load($campos,$datos,$fecha);
      
      $en_historico = $this->enhistorico->loadGraficoCompania($fdesde ,$fhasta);
          
      $ec_encuesta =  $this->ec_encuesta->encuestasDiaria($fdesde ,$fhasta);
      
      $graficoBarras = array(
       
          'en_historico' => $en_historico,
          'ec_encuesta' => $ec_encuesta );

         $this->load->view('googlechart',array('content_page' => 'datoclientechart', 'menutop' => 0 , 'count' => $resultado,'graficoBarras' => $graficoBarras));
     }
     
     /**
      * Este metodo permite la exportacion a excel
      */
     public function excel ()
    {
         
         header("Content-Type: application/vnd.ms-excel");
         header("Expires: 0");
         header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
         header("content-disposition: attachment;filename=encuesta_salida.xls");
        
          $records =  $this->datoclientemodel->loadRegistro();
          
          echo "  <TABLE BORDER=1 align='center' CELLPADDING=1 CELLSPACING=1>
      <TR>   
      <TD><span class='style4'>DETALLE</span></TD>
      <TD><span class='style4'>TIPO DE SERVICIO</span></TD>
      <TD><span class='style4'>CONTACTO</span></TD>
      <TD><span class='style4'>EMAIL</span></TD>
      <TD><span class='style4'>FECHA SALIDA</span></TD>
      <TD><span class='style4'>TELEFONO</span></TD>
      <TD><span class='style4'>CELULAR</span></TD>
      <TD><span class='style4'>NOTA</span></TD>
      </TR> ";
   
          foreach ($records as $objetos) {
      printf("<tr><td>".$objetos->getReferencia()."</td>
                  <td>".$objetos->getNombreServicio()."</td>
                  <td>".$objetos->getContacto()."</td> 
                  <td>".$objetos->getEmailCia()."</td>
                  <td>".$objetos->getDate()."</td>
                  <td>".$objetos->getTelefono1()."</td> 
                  <td>".$objetos->getTelefono2()."</td>
                  <td>".$objetos->getNota()."</td></tr>");
   }
          
         
    }
         
}